public class MidIndexTest {
    public static void main(String[] args) {
        int[] arr = new int[Integer.MAX_VALUE/2 + 10];
        arr[arr.length-1] = 1;
        /*
        数组的长度比较大，数组的长度在 int最大值的一半以上。
        这里为了演示效果，把数组元素特殊化， arr数组前面的元素都是0，最后一个元素是1
         */

        int target = 1;//查找1

        int left = 0;
        int right = arr.length - 1;

        int index = -1;
        while(left<=right){
            //int mid = (left + right) / 2;//有风险，当数组长度比较大，目标值靠右时，可能出现left+right超过int范围越界了
            int mid = left + (right-left)/2;
            if (target == arr[mid]) {
                index = mid;
                break;
            } else if (target > arr[mid]) {
                left = mid + 1;
            } else {  //target < arr[mid]
                right = mid - 1;
            }
        }
        System.out.println("index = " + index);
    }
}
